package com.itheima.d2_xml;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.ArrayList;
import java.util.List;

/**
 * 目标：掌握使用Dom4j框架解析XML文件。
 */
public class Dom4JTest1Practice {
    public static void main(String[] args) throws Exception {
      /*  //TODO 将xml文件夹中的contacts.xml内容解析出来
        SAXReader saxReader = new SAXReader();//先调用SAXReader()无参构造器，得到DOM4J 的 SAXReader（import org.dom4j.Element）对象。
        Document read = saxReader.read("day11properties-xml-log-thread/xml/contacts.xml");//SAXReader对象调用read(“字符串路径或InputStream对象”)方法
                                                                                                    //得到Document对象，Document中储存了xml文件
        Element rootElement = read.getRootElement();//Document对象调用getRootElemengt()方法，得到Element对象（获取根元素对象）
        List<Element> elements = rootElement.elements();//根元素对象调用elements()方法，得到根对象目录下所有子元素
        for (Element element : elements) {//遍历所有子元素集合，element代表每个子元素
            String id = element.attributeValue("id");
            String name = element.elementText("name");
            String gender = element.elementText("gender");
            String email = element.elementText("email");
            System.out.println("id"+id+"name"+name+"gender"+gender+"email"+email);
        }*/
        ArrayList<Contact> contacts = new ArrayList<>();//储存解析出来的对象

        SAXReader saxReader =new SAXReader();//得到DOM4J的解析器
        Document read = saxReader.read("day11properties-xml-log-thread/xml/contacts.xml");
        //根据路径将XML文件拿到Document容器中去

        Element rootElement = read.getRootElement();//获取根对象

        List<Element> elements = rootElement.elements();//获取根对象的所有子元素

        for (Element element : elements) {//遍历子元素
            String sid = element.attributeValue("id");
            int id = Integer.parseInt(sid);//将字符串解析成Integer

            String name = element.elementText("name");
            String gender = element.elementText("gender");
            String email = element.elementText("email");

            Contact contact = new Contact(id,name,gender,email);//封装每个子元素对象

            contacts.add(contact);//将封装好的子元素对象添加到集合

        }
        contacts.forEach(System.out::println);

    }



}
